iT邦幫忙

2025 iThome 鐵人賽

DAY 5
1

5

什麼是 Trino

Trino is a distributed SQL query engine designed to query large data sets distributed over one or more heterogeneous data sources.

在 Trino 官方文件中,開頭便定義其為可查詢異質資料源 (heterogeneous data sources) 的 *分散式 SQL 查詢引擎 (distributed SQL query engine),清楚寫明 Trino 與僅能查詢單一資料源的傳統分析倉儲之不同。

*分散式查詢引擎(distributed query engine)
簡單來說,就是可以跨多個節點(node)或伺服器(server)執行SQL查詢的系統。其特性有:
1.透過在多台機器上分配工作來處理大型資料集(dataset)
2.實現平行處理(parallel processing)並提高效能(performance)

但別搞錯,Trino 並不是資料庫 (Database),而是以更有效率查詢如 Hadoop 及 HDFS 在 TB/PB 級別資料量為目標而設計出來的查詢引擎。

相較於 Hive 與 Pig 等這些只為 HDFS 而生的查詢引擎,Trino 可以連接更多種資料源,並透過分散式的特性,解決即時分析 (ad-hoc query) 這種互動式分析需要即時回應的效能問題。

Trino 的組成架構

大致了解這隻帶點科技感的兔子的來頭後,就可以來詳談架構細節的部分,我們將 Trino 拆解成最基本的組成元素如下圖,並按圖索驥來說明 Trino 各部件的定位與工作範圍:
white

  1. 集群 (Cluster):

    • Trino 集群就像一個團隊,包含一個隊長 (Coordinator Node) 和許多隊員(Worker Nodes)
    • 當使用者提交一個 SQL 查詢時,隊長會接收任務,並且把工作分給隊員們去執行
  2. 節點 (Node),集群裡的每台伺服器 :

    • 每台伺服器上都執行一個 Trino instance
    • 可以把節點想成團隊裡的每一個成員 (包含隊長/隊員)
  3. 協調者 (Coordinator),集群裡的隊長,負責 :

    • 解析 SQL 語法 — 理解分析工作要幹嘛
    • 規劃查詢 — 決定怎麼執行查詢,也就是一般說的 Query planning
    • 分配任務給隊員們 — 讓隊員們分工合作
    • 維護存放 Metadata 的 Metastore
    • 利用 Discovery Server 讓隊員們註冊並加入集群
    • 使用者可以透過 CLI 或 JDBC 的工具連線到 Coordinator
  4. 工作者 (Worker),集群裡的隊員,負責 :

    • 執行隊長分配的任務
    • 實際處理資料的成員,把處理結果回傳給隊長
    • 利用 Connector 連線到各資料源

明日預告

系列文明日《Trino 資料哪裡來》將延續今日內容,深入介紹 Trino 如何存取與管理資料來源,並與 Hadoop 生態系的 Hive 比較,讓 Trino 的特色與定位更為鮮明。

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 04 - 效能跟一致性? 資料湖倉全都要!
下一篇
Day 06 - Trino 資料哪裡來
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言